package cn.ichensw.otherworldlystationbackend.service;

import cn.ichensw.otherworldlystationbackend.common.DoubanPageRequest;
import cn.ichensw.otherworldlystationbackend.model.dto.douban.DoubanSearchMovieRequest;
import cn.ichensw.otherworldlystationbackend.model.vo.douban.DoubanMovieUsBoxVO;
import cn.ichensw.otherworldlystationbackend.model.vo.douban.DoubanSearchMovieVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 豆瓣接口Service
 *
 * @author csw
 */
public interface DoubanService {

    /**
     * 电影条目搜索
     *
     * @param request            请求参数
     * @param httpServletRequest
     * @return Boolean
     */
    Page<DoubanSearchMovieVO> searchMovie(DoubanSearchMovieRequest request, HttpServletRequest httpServletRequest);


    /**
     * 查询电影 TOP250
     *
     * @param request            分页参数
     * @param httpServletRequest
     * @return 电影列表
     */
    Page<DoubanSearchMovieVO> movieTop250(DoubanPageRequest request, HttpServletRequest httpServletRequest);


    /**
     * 查询电影 北美票房榜
     *
     * @return 电影列表
     */
    DoubanMovieUsBoxVO movieUsBox(DoubanPageRequest request, HttpServletRequest httpServletRequest);

    /**
     * 查询电影 口碑榜
     *
     * @return 电影列表
     */
    Page<DoubanSearchMovieVO> movieWeekly(DoubanPageRequest page, HttpServletRequest httpServletRequest);

    /**
     * 查询电影 新片榜
     *
     * @return 电影列表
     */
    Page<DoubanSearchMovieVO> movieNew(DoubanPageRequest request, HttpServletRequest httpServletRequest);

    /**
     * 查询电影 正在上映
     *
     * @return 电影列表
     */
    Page<DoubanSearchMovieVO> movieInTheaters(DoubanPageRequest request, HttpServletRequest httpServletRequest);


    /**
     * 查询电影 即将上映
     *
     * @return 电影列表
     */
    Page<DoubanSearchMovieVO> movieComingSoon(DoubanPageRequest request, HttpServletRequest httpServletRequest);

    /**
     * 根据 id 查询电影详情
     *
     * @param id                 电影id
     * @param httpServletRequest 会话请求
     * @return 电影列表
     */
    DoubanSearchMovieVO movieSubjectDetail(Long id, HttpServletRequest httpServletRequest);

}
